package com.edu.leetcode.dataStruct;

/**
 * 泰波那契序列Tn定义如下：
 * T0 = 0, T1 = 1, T2 = 1, 且在 n >= 0的条件下 Tn+3 = Tn + Tn+1 + Tn+2
 * 给你整数n，请返回第 n 个泰波那契数Tn 的值。
 */
public class Demo34 {
    public static void main(String[] args) {
        Demo34 demo34 = new Demo34();
        int tribonacci = demo34.tribonacci(3);
        System.out.println(tribonacci);
    }

    int[] cache = new int[40];

    /**
     *
     * @param n 第多少个数
     * @return 泰波那契数
     */
    public int tribonacci(int n) {
        if (n == 0) return 0;
        if (n == 1 || n == 2) return 1;
        if (cache[n] != 0) {
            return cache[n];
        }
        cache[n] = tribonacci(n - 1) + tribonacci(n - 2) + tribonacci(n - 3);
        return cache[n];
    }
}
